// pages/apply/apply.js
const db = wx.cloud.database();
const command = db.command;
Page({
  data: {
    list: [],
    username: ''
  },
  initList() {
    db.collection('project').get({
      success: (res) => {
        res.data.forEach(item => {
          if (item.joiner.includes(this.data.username)) {
            item.status = '已报名'
          } else if (item.joiner.length < item.total && !item.joiner.includes(this.username)) {
            item.status = '报名'
          } else if (item.joiner.length >= item.total) {
            item.status = '已满'
          }
        })
        this.setData({
          list: res.data || []
        })
      }
    })
  },
  apply(e) { // 点击报名方法
    const index = e.target.dataset.index; // 获取当前点击的项目下标
    db.collection('project').where({ // 
      project_name: this.data.list[index].project_name
    }).update({ // 把我们的名字加入到joiner里面进行报名
      data: {
        joiner: command.push(this.data.username) // 通过命令的push方法，在数据库joiner这个数组后面再加一个
      },
      success: (res) => {
        wx.showToast({title: '报名成功', icon: 'success'});
        this.initList()
      }
    })
  },
  cancelApply(e) { // 取消报名
    const index = e.target.dataset.index; // 获取我们点击的项目下标
    let joiner = this.data.list[index].joiner; // 获取我们点击的项目的joiner，看看有哪些人参加了
    const i = joiner.findIndex(item => item === this.data.username); // 通过数组的findIndex方法找到我们自己名字的下标
    joiner.splice(i, 1); // 通过数组的splice方法，删除joiner中我们自己的名字
    db.collection('project').where({
      project_name: this.data.list[index].project_name
    }).update({ // 将新的joiner更新到表
      data: {
        joiner: command.set(joiner) // 通过命令的set方法，直接替换数据中的joiner的值
      },
      success: (res) => {
        wx.showToast({title: '取消成功', icon: 'success'});
        this.initList()
      }
    })
  },

  onLoad: function (options) {
    this.setData({
      username: wx.getStorageSync('username') // wx.getStorageSync('key') 获取本地存储的数据
    })
    this.initList(); // 获取列表数据
  }
})